namespace OracleInternal.Secure.Network
{
	public abstract class EncryptionAlgorithm
	{
		internal const int NAE_40_KEY_SIZE_BITS = 40;

		internal const int NAE_56_KEY_SIZE_BITS = 56;

		internal const int NAE_128_KEY_SIZE_BITS = 128;

		internal const int NAE_256_KEY_SIZE_BITS = 256;

		internal const int NAE_CBC_0 = 1;

		internal const int NAE_CBC_8 = 2;

		internal const int NAE_RAW_0 = 3;

		internal const int NAE_RAW_8 = 4;

		internal const int a = 0;

		internal const int RC4_40 = 140;

		internal const int RC4_56 = 141;

		internal const int RC4_128 = 142;

		internal const int RC4_256 = 143;

		internal const int DES_40_RAW_0 = 210;

		internal const int DES_56_RAW_0 = 211;

		internal const int DES_40_RAW_8 = 212;

		internal const int DES_56_RAW_8 = 213;

		internal const int DES_40_CBC_0 = 220;

		internal const int DES_56_CBC_0 = 221;

		internal const int DES_40_CBC_8 = 222;

		internal const int DES_56_CBC_8 = 223;

		public abstract void init(byte[] key, byte[] iv);

		public abstract byte[] decrypt(byte[] ebuf);

		public abstract byte[] decrypt(byte[] ebuf, int length);

		public abstract byte[] encrypt(byte[] buffer);

		public abstract byte[] encrypt(byte[] buffer, int length);

		public abstract int maxDelta();

		public abstract void setSessionKey(byte[] key, byte[] iv);
	}
}
